<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta content="Cask Data, Inc." name="author" />
<meta content="HTTP RESTful Interface to the Cask Data Application Platform" name="description" />
<meta content="Copyright © 2014-2017 Cask Data, Inc." name="copyright" />


    <meta name="git_release" content="6.1.1">
    <meta name="git_hash" content="05fbac36f9f7aadeb44f5728cea35136dbc243e5">
    <meta name="git_timestamp" content="2020-02-09 08:22:47 +0800">
    <title>Introduction</title>

    <link rel="stylesheet" href="../_static/cdap-bootstrap.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <link rel="stylesheet" href="../_static/bootstrap-3.3.6/css/bootstrap.min.css" type="text/css" />
    <link rel="stylesheet" href="../_static/bootstrap-3.3.6/css/bootstrap-theme.min.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/bootstrap-sphinx.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/cdap-dynamicscrollspy-4.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/jquery.mCustomScrollbar.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/cdap-jquery.mCustomScrollbar.css" type="text/css" />
    <link rel="stylesheet" href="../_static/css/abixTreeList-2.css" type="text/css" />
    <link rel="stylesheet" href="../_static/cdap-bootstrap.css" type="text/css" />

    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '',
        VERSION:     '6.1.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  false
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>

    <link rel="shortcut icon" href="../_static/favicon.ico"/>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="top" title="Cask Data Application Platform 6.1.1 Documentation" href="../index.html" />
    <link rel="up" title="CDAP HTTP RESTful API v3" href="index.html" />
    <link rel="next" title="Artifact HTTP RESTful API" href="artifact.html" />
    <link rel="prev" title="CDAP HTTP RESTful API v3" href="index.html" />
    <!-- block extrahead -->
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
    <meta name="apple-mobile-web-app-capable" content="yes">
    <!-- block extrahead end -->

</head>
<body role="document">

<!-- block navbar -->
<div id="navbar" class="navbar navbar-inverse navbar-default navbar-fixed-top">
    <div class="container-fluid">
      <div class="row">
        <div class="navbar-header">
          <!-- .btn-navbar is used as the toggle for collapsed navbar content -->
          <a class="navbar-brand" href="../table-of-contents/../../index.html">
            <span><img alt="CDAP logo" src="../_static/cdap_logo.svg"/></span>
          </a>

          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>

          <div class="pull-right">
            <div class="dropdown version-dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown"
                role="button" aria-haspopup="true" aria-expanded="false">
                v 6.1.1 <span class="caret"></span>
              </a>
              <ul class="dropdown-menu">
                <li><a href="//docs.cdap.io/cdap/5.1.2/en/index.html">v 5.1.2</a></li>
                <li><a href="//docs.cdap.io/cdap/4.3.4/en/index.html">v 4.3.4</a></li>
              </ul>
            </div>
          </div>
          <form class="navbar-form navbar-right navbar-search" action="../search.html" method="get">
            <div class="form-group">
              <div class="navbar-search-image material-icons"></div>
              <input type="text" name="q" class="form-control" placeholder="  Search" />
            </div>
            <input type="hidden" name="check_keywords" value="yes" />
            <input type="hidden" name="area" value="default" />
          </form>

          <div class="collapse navbar-collapse nav-collapse navbar-right navbar-navigation">
            <ul class="nav navbar-nav"><li class="docsite-nav-tab-container"><a class="docsite-nav-tab-link " href="../table-of-contents/../../index.html">简介</a></li><li class="docsite-nav-tab-container"><a class="docsite-nav-tab-link " href="../table-of-contents/../../guides.html">手册</a></li><li class="docsite-nav-tab-container"><a class="docsite-nav-tab-link current" href="../table-of-contents/../../reference-manual/index.html">参考</a></li><li class="docsite-nav-tab-container"><a class="docsite-nav-tab-link " href="../table-of-contents/../../faqs/index.html">帮助</a></li>
            </ul>
          </div>

        </div>
      </div>
    </div>
  </div><!-- block navbar end -->
<!-- block main content -->
<div class="main-container container">
  <div class="row"><div class="col-md-2">
      <div id="sidebar" class="bs-sidenav scrollable-y-outside" role="complementary">
<!-- theme_manual: reference-manual -->
<!-- theme_manual_highlight: reference -->
<!-- sidebar_title_link: Reference -->

  <div role="note" aria-label="manuals links"><h3>Reference</h3>
    <ul class="reference-page-menu">
      <nav class="pagenav">
      <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../index.html"> Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../characters.html"> Supported Characters</a></li>
<li class="toctree-l1"><a class="reference internal" href="../cli-api.html"> Command Line Interface API</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html"> HTTP RESTful API</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="artifact.html">Artifact</a></li>
<li class="toctree-l2"><a class="reference internal" href="configuration.html">Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="dataset.html">Dataset</a></li>
<li class="toctree-l2"><a class="reference internal" href="lifecycle.html">Lifecycle</a></li>
<li class="toctree-l2"><a class="reference internal" href="logging.html">Logging</a></li>
<li class="toctree-l2"><a class="reference internal" href="metadata.html">Metadata</a></li>
<li class="toctree-l2"><a class="reference internal" href="metrics.html">Metrics</a></li>
<li class="toctree-l2"><a class="reference internal" href="monitor.html">Monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="namespace.html">Namespace</a></li>
<li class="toctree-l2"><a class="reference internal" href="dashboard.html">Dashboard</a></li>
<li class="toctree-l2"><a class="reference internal" href="preferences.html">Preferences</a></li>
<li class="toctree-l2"><a class="reference internal" href="profile.html">Profile</a></li>
<li class="toctree-l2"><a class="reference internal" href="query.html">Query</a></li>
<li class="toctree-l2"><a class="reference internal" href="reports.html">Reports</a></li>
<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="service.html">Service</a></li>
<li class="toctree-l2"><a class="reference internal" href="transactions.html">Transactions</a></li>
<li class="toctree-l2"><a class="reference internal" href="workflow.html">Workflow</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../java-client-api.html"> Java Client API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../javadocs/index.html"> Javadocs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html"> 发行说明</a></li>
<li class="toctree-l1"><a class="reference internal" href="../licenses/index.html"> Trademarks, Licenses, and Dependencies</a></li>
<li class="toctree-l1"><a class="reference internal" href="../glossary.html"> 术语表</a></li>
<li class="toctree-l1"><a class="reference internal" href="../genindex.html"> Index</a></li>
</ul>
</nav>
    </ul>
  </div></div>
    </div><div class="col-md-8 content" id="main-content">
    
  <div class="section" id="introduction">
<span id="http-restful-api-introduction"></span><h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">🔗</a></h1>
<div class="section" id="conventions">
<span id="http-restful-api-conventions"></span><h2>Conventions<a class="headerlink" href="#conventions" title="Permalink to this headline">🔗</a></h2>
<p>In this API, <em>client</em> refers to an external application that is calling CDAP using the HTTP interface.
<em>application</em> refers to a user application that has been deployed into CDAP.</p>
<div class="section" id="base-url">
<span id="http-restful-api-conventions-base-url"></span><h3>Base URL<a class="headerlink" href="#base-url" title="Permalink to this headline">🔗</a></h3>
<p>All URLs referenced in these APIs have this base URL:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">http://&lt;host&gt;:&lt;port&gt;</span>
</pre></div>
</div>
<p>where:</p>
<table border="1" class="docutils">
<colgroup>
<col width="20%" />
<col width="80%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Parameter</th>
<th class="head">Description</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">host</span></code></td>
<td>Host name of the CDAP server</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">port</span></code></td>
<td>Port set as the <code class="docutils literal notranslate"><span class="pre">router.bind.port</span></code> in <code class="docutils literal notranslate"><span class="pre">cdap-site.xml</span></code> (default: <strong>11015</strong>)</td>
</tr>
</tbody>
</table>
<p><strong>Note:</strong> If SSL is enabled for CDAP, then the base URL uses <code class="docutils literal notranslate"><span class="pre">https</span></code> instead and <code class="docutils literal notranslate"><span class="pre">port</span></code> becomes the port that is set
as the <code class="docutils literal notranslate"><span class="pre">router.ssl.server.port</span></code> in <code class="docutils literal notranslate"><span class="pre">cdap-site.xml</span></code> (default: 10443).</p>
<p>In this API, each endpoint is documented with the HTTP method for the request and a
resource identifier. The base URL is assumed to precede each API’s resource identifier.
For example, the endpoint documentation for creating a stream is:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">PUT /v3/namespaces/&lt;namespace-id&gt;/streams/&lt;new-stream-id&gt;</span>
</pre></div>
</div>
<p>This means you would use:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">PUT http://&lt;host&gt;:&lt;port&gt;/v3/namespaces/&lt;namespace-id&gt;/streams/&lt;new-stream-id&gt;</span>
</pre></div>
</div>
<p>If you are using the CDAP Sandbox, running on your local machine, you might make a <code class="docutils literal notranslate"><span class="pre">curl</span></code> call such as:</p>

<script type="text/javascript">

  $(function tabbedparsedliteral4() {
    var tabs = ['linux', 'windows'];
    var mapping = {'windows': 'windows', 'linux': 'linux'};
    var tabSetID = 'linux-windows';
    for (var i = 0; i < tabs.length; i++) {
      var tab = tabs[i];
      $("#tabbedparsedliteral4 .example-tab-" + tab).click(changeExampleTab(tab, mapping, "tabbedparsedliteral4", tabSetID));
    }
  });

</script>
<div id="tabbedparsedliteral4" class="tabbed-parsed-literal dependent-linux-windows">
<ul class="tabbed-parsed-literal nav-tabs">
<li class="example-tab example-tab-linux active"><a href="#">Linux</a></li>
<li class="example-tab example-tab-windows "><a href="#">Windows</a></li>
</ul>

<div class="tab-contents">

<div class="tab-pane tab-pane-linux active">
<div class="code code-tab">
<div class="highlight-console">
<!-- tabbed-parsed-literal start -->
<div class="highlight"><pre><span></span><span class="gp">$</span> curl -w<span class="s2">&quot;\n&quot;</span> -X PUT <span class="s2">&quot;http://localhost:11015/v3/namespaces/default/streams/who&quot;</span>
</pre></div>
<!-- tabbed-parsed-literal end --></div>
</div>
</div>
<div class="tab-pane tab-pane-windows ">
<div class="code code-tab">
<div class="highlight-shell-session">
<!-- tabbed-parsed-literal start -->
<div class="highlight"><pre><span></span><span class="gp">&gt;</span> curl -X PUT <span class="s2">&quot;http://localhost:11015/v3/namespaces/default/streams/who&quot;</span>
</pre></div>
<!-- tabbed-parsed-literal end --></div>
</div>
</div>
</div>
</div>
</div>
<div class="section" id="variable-replacement">
<h3>Variable Replacement<a class="headerlink" href="#variable-replacement" title="Permalink to this headline">🔗</a></h3>
<p>Text that are variables that you are to replace is indicated by a series of angle brackets (<code class="docutils literal notranslate"><span class="pre">&lt;</span> <span class="pre">&gt;</span></code>). For example:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">PUT /v3/namespaces/&lt;namespace-id&gt;/streams/&lt;new-stream-id&gt;</span>
</pre></div>
</div>
<p>indicates that text such as <code class="docutils literal notranslate"><span class="pre">&lt;namespace-id&gt;</span></code> and <code class="docutils literal notranslate"><span class="pre">&lt;new-stream-id&gt;</span></code> are variables and that
you are to replace them with your values, perhaps in this case the namespace <em>default</em> and
the stream <em>mystream</em>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">PUT /v3/namespaces/default/streams/mystream</span>
</pre></div>
</div>
</div>
<div class="section" id="reserved-and-unsafe-characters">
<span id="http-restful-api-conventions-reserved-unsafe-characters"></span><h3>Reserved and Unsafe Characters<a class="headerlink" href="#reserved-and-unsafe-characters" title="Permalink to this headline">🔗</a></h3>
<p>In path parameters, reserved and unsafe characters must be replaced with their equivalent
percent-encoded format, using the “<code class="docutils literal notranslate"><span class="pre">%hh</span></code>” syntax, as described in
<a class="reference external" href="http://tools.ietf.org/html/rfc3986#section-2.1">RFC3986: Uniform Resource Identifier (URI): Generic Syntax</a>.</p>
<p>In general, any character that is not a letter, a digit, or one of <code class="docutils literal notranslate"><span class="pre">$-_.+!*'()</span></code> should be encoded.</p>
<p>See the section on <a class="reference external" href="../../../developer-manual/building-blocks/services.html#services-path-parameters" title="(in Cask Data Application Platform v6.1.1)"><span class="xref std std-ref">Path Parameters</span></a> for suggested approaches to
encoding parameters.</p>
<p>Additionally, there are further restrictions on the characters used in certain parameters such as
namespaces.</p>
</div>
<div class="section" id="names-and-characters-for-namespace-identifiers">
<span id="http-restful-api-namespace-characters"></span><h3>Names and Characters for Namespace Identifiers<a class="headerlink" href="#names-and-characters-for-namespace-identifiers" title="Permalink to this headline">🔗</a></h3>
<p>Namespaces have a limited set of characters allowed in their identifier; they are
restricted to letters (a-z, A-Z), digits (0-9), hyphens (-), and underscores (_). There is
no size limit on the length of a namespace identifier nor on the number of namespaces.</p>
<p>The three namespaces <code class="docutils literal notranslate"><span class="pre">cdap</span></code>, <code class="docutils literal notranslate"><span class="pre">default</span></code>, and <code class="docutils literal notranslate"><span class="pre">system</span></code> are reserved. The <code class="docutils literal notranslate"><span class="pre">cdap</span></code>
and <code class="docutils literal notranslate"><span class="pre">system</span></code> namespaces cannot be used by users directly. The <code class="docutils literal notranslate"><span class="pre">default</span></code> namespace,
however,  can be used by anyone.</p>
<p>All reserved namespaces cannot be deleted.</p>
</div>
</div>
<div class="section" id="status-codes">
<span id="http-restful-api-status-codes"></span><h2>Status Codes<a class="headerlink" href="#status-codes" title="Permalink to this headline">🔗</a></h2>
<p><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">Common status codes</a> returned for all HTTP calls:</p>
<table border="1" class="docutils">
<colgroup>
<col width="10%" />
<col width="30%" />
<col width="60%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd"><th class="head">Code</th>
<th class="head">Description</th>
<th class="head">Explanation</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">200</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">OK</span></code></td>
<td>The request returned successfully</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">400</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">Bad</span> <span class="pre">Request</span></code></td>
<td>The request had a combination of parameters that is not recognized</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">401</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">Unauthorized</span></code></td>
<td>The request did not contain an authentication token; see the section below on
<a class="reference internal" href="#http-restful-api-working-with-cdap-security"><span class="std std-ref">Working with CDAP Security</span></a></td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">403</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">Forbidden</span></code></td>
<td>The request was authenticated but the client does not have permission; requests can
fail due to a lack of privilege, as described in the section below on
<a class="reference internal" href="#http-restful-api-working-with-cdap-security"><span class="std std-ref">Working with CDAP Security</span></a></td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">404</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">Not</span> <span class="pre">Found</span></code></td>
<td>The request did not address any of the known URIs</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">405</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">Method</span> <span class="pre">Not</span> <span class="pre">Allowed</span></code></td>
<td>A request was received with a method not supported for the URI</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">409</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">Conflict</span></code></td>
<td>A request could not be completed due to a conflict with the current resource state</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">500</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">Internal</span> <span class="pre">Server</span> <span class="pre">Error</span></code></td>
<td>An internal error occurred while processing the request</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">501</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">Not</span> <span class="pre">Implemented</span></code></td>
<td>A request contained a query that is not supported by this API</td>
</tr>
</tbody>
</table>
<p><strong>Note:</strong> These returned status codes are not necessarily included in the descriptions of
the APIs, but a request may return any of these.</p>
</div>
<div class="section" id="converting-from-v2-apis">
<h2>Converting from V2 APIs<a class="headerlink" href="#converting-from-v2-apis" title="Permalink to this headline">🔗</a></h2>
<p>If you are converting code from the earlier HTTP RESTful API v2, the
simplest way to convert your code is to use the <code class="docutils literal notranslate"><span class="pre">default</span></code> namespace, which is pre-existing
in CDAP. Example:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">PUT http://&lt;host&gt;:&lt;port&gt;/v2/streams/&lt;new-stream-id&gt;</span>
</pre></div>
</div>
<p>can be replaced with:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">PUT http://&lt;host&gt;:&lt;port&gt;/v3/namespaces/default/streams/&lt;new-stream-id&gt;</span>
</pre></div>
</div>
<p>However, you will need to test your code, as many APIs have changed as a result of the
addition of namespaces.</p>
</div>
<div class="section" id="working-with-cdap-security">
<span id="http-restful-api-working-with-cdap-security"></span><h2>Working with CDAP Security<a class="headerlink" href="#working-with-cdap-security" title="Permalink to this headline">🔗</a></h2>
<ul>
<li><p class="first">When working with a CDAP cluster with <strong>security enabled</strong> (<code class="docutils literal notranslate"><span class="pre">security.enabled=true</span></code> in
<code class="docutils literal notranslate"><span class="pre">cdap-site.xml</span></code>), all calls to the HTTP RESTful APIs must be authenticated. Clients must
first obtain an access token from the authentication server (see the <a class="reference external" href="../../../developer-manual/security/client-authentication.html#client-authentication" title="(in Cask Data Application Platform v6.1.1)"><span class="xref std std-ref">Client
Authentication</span></a> section of the <a class="reference external" href="../../../developer-manual/index.html#developer-index" title="(in Cask Data Application Platform v6.1.1)"><span>CDAP 开发手册</span></a>).
In order to authenticate, all client requests must supply this access token in the
<code class="docutils literal notranslate"><span class="pre">Authorization</span></code> header of the request:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">Authorization: Bearer &lt;token&gt;</span>
</pre></div>
</div>
<p>For CDAP-issued access tokens, the authentication scheme must always be <code class="docutils literal notranslate"><span class="pre">Bearer</span></code>.</p>
</li>
<li><p class="first">When working with a CDAP cluster with <strong>authorization enabled</strong>
(<code class="docutils literal notranslate"><span class="pre">security.authorization.enabled=true</span></code> in <code class="docutils literal notranslate"><span class="pre">cdap-site.xml</span></code>), all calls to the HTTP
RESTful APIs must be authorized. Clients must be privileged, following the polices
described in <a class="reference external" href="../../../admin-manual/security/authorization.html#security-authorization-policies" title="(in Cask Data Application Platform v6.1.1)"><span>Authorization Policies</span></a>.</p>
</li>
</ul>
</div>
</div>

</div>
    <div class="col-md-2">
      <div id="right-sidebar" class="bs-sidenav scrollable-y" role="complementary">
        <div id="localtoc-scrollspy">
        </div>
      </div>
    </div></div>
</div>
<!-- block main content end -->
<!-- block footer -->
<footer class="footer">
      <div class="container">
        <div class="row">
          <div class="col-md-2 footer-left"><a title="CDAP HTTP RESTful API v3" href="index.html" />Previous</a></div>
          <div class="col-md-8 footer-center"><a class="footer-tab-link" href="../table-of-contents/../../reference-manual/licenses/index.html">Copyright</a> &copy; 2014-2020 Cask Data, Inc.&bull; <a class="footer-tab-link" href="//docs.cask.co/cdap/6.1.1/cdap-docs-6.1.1-web.zip" rel="nofollow">Download</a> an archive or
<a class="footer-tab-link" href="//docs.cask.co/cdap">switch the version</a> of the documentation
          </div>
          <div class="col-md-2 footer-right"><a title="Artifact HTTP RESTful API" href="artifact.html" />Next</a></div>
        </div>
      </div>
    </footer>
<!-- block footer end -->
<script type="text/javascript" src="../_static/bootstrap-3.3.6/js/bootstrap.min.js"></script><script type="text/javascript" src="../_static/js/bootstrap-sphinx.js"></script><script type="text/javascript" src="../_static/js/abixTreeList-2.js"></script><script type="text/javascript" src="../_static/js/cdap-dynamicscrollspy-4.js"></script><script type="text/javascript" src="../_static/js/cdap-version-menu.js"></script><script type="text/javascript" src="../_static/js/copy-to-clipboard.js"></script><script type="text/javascript" src="../_static/js/jquery.mousewheel.min.js"></script><script type="text/javascript" src="../_static/js/jquery.mCustomScrollbar.js"></script><script type="text/javascript" src="../_static/js/js.cookie.js"></script><script type="text/javascript" src="../_static/js/tabbed-parsed-literal-0.2.js"></script><script type="text/javascript" src="../_static/js/cdap-onload-javascript.js"></script><script type="text/javascript" src="../_static/js/cdap-version-menu.js"></script>
    <script src="https://cdap.gitee.io/docs/cdap/json-versions.js"/></script>
  </body>
</html>